﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using HR_ASP.ViewModel;
using DB.Model;

namespace HR_ASP.Controllers
{
    public class PracownikController : Controller
    {
        //
        // GET: /Pracownik/

        public ActionResult Index()
        {
            using (var context = new HREntities())
            {
                return View(context.Pracownicy.Select(n => new PracownikViewModel()
                {
                    ID = n.ID_Pracow,
                    Identyfikator = n.Identyfikator,
                    Imie = n.Imie,
                    Nazwisko = n.Nazwisko,
                    Pesel = n.Pesel,
                    Email = n.Email,
                    Miasto = n.Miasto,
                    Kod = n.Kod,
                    Ulica = n.Ulica,
                    Numer = n.Numer,
                    DataU = n.DataU,
                    DataM = n.DataM

                }).ToArray()
                );
            }
        }

        public ActionResult Create()
        {
            return View("Create");
        }

        [HttpPost]
        public ActionResult Create(PracownikViewModel p)
        {
            using (var context = new HREntities())
            {
                context.Pracownicy.AddObject(p.GetModel(new Pracownik()));
                context.SaveChanges();
            }
            return RedirectToAction("Index");
        }

        public ActionResult Edit(int id)
        {
            using (var context = new HREntities())
            {
                var p = context.Pracownicy.SingleOrDefault(s => s.ID_Pracow == id);
                if (p == null)
                {
                    return RedirectToAction("Index");
                }
                return View(new PracownikViewModel(p));
            }
        }

        [HttpPost]
        public ActionResult Edit(PracownikViewModel pracow)
        {
            try
            {
                using (var context = new HREntities())
                {
                    Pracownik pracownikDB = context.Pracownicy.SingleOrDefault(s => s.ID_Pracow == pracow.ID);
                    context.ApplyCurrentValues<Pracownik>("Pracownicy", pracow.GetModel(pracownikDB));
                    context.SaveChanges();
                    return RedirectToAction("Index");
                }
            }
            catch (Exception ex)
            {
                return View("Error");
            }



        }

        public ActionResult Delete(int id)
        {
            using (var context = new HREntities())
            {
                var pracow = context.Pracownicy.SingleOrDefault(s => s.ID_Pracow == id);
                if (pracow != null)
                {
                    context.Pracownicy.DeleteObject(pracow);
                    context.SaveChanges();
                }
            }
            return RedirectToAction("Index");
        }

        public ActionResult DeleteAjax(int id, WyszukPracowViewModel wyszkPracow)
        {
            using (var context = new HREntities())
            {
                var pracow = context.Pracownicy.SingleOrDefault(s => s.ID_Pracow == id);
                if (pracow != null)
                {
                    context.Pracownicy.DeleteObject(pracow);
                    context.SaveChanges();
                }
            }
            return RedirectToAction("PracowDane","WyszukPracow");
        }

        public ActionResult Details(int id)
        {
            using (var context = new HREntities())
            {
                PracownikViewModel pracownik = new PracownikViewModel(context.Pracownicy.SingleOrDefault(s => s.ID_Pracow == id));
               
                if (pracownik == null)
                {
                    return RedirectToAction("Index");
                }
                return View(pracownik);
            }
        }

    }
}
